package manejadores;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import censo.db;
import entidades.AltaTension;

public class ManejadorAltaTension {
	private AltaTension alta;
	private db conexion = null;
	public AltaTension getAlta() {
		return alta;
	}
	public void setAlta(AltaTension alta) {
		this.alta = alta;
	}
	public db getConexion() {
		return conexion;
	}
	public void setConexion(db conexion) {
		this.conexion = conexion;
	}
	public ManejadorAltaTension(AltaTension alta, db conexion) {
		super();
		this.alta = alta;
		this.conexion = conexion;
	}
	public ManejadorAltaTension(db conexion) {
		super();
		this.conexion = conexion;
	}
	
	public boolean Add() throws SQLException {
		boolean result = false;
		String sql = "INSERT INTO alta_tension (TRAMO_NODO_INICIAL,TRAMO_NODO_FINAL,TRAMO_LONGITUD," +
				"APOYO_ALTURA,APOYO_CANTIDAD,APOYO_MATERIAL,APOYO_ESTADO,ESTRUCTURA_TIPO,ESTRUCTURA_ESTADO," +
				"AISLAMIENTO_TIPO,AISLAMIENTO_ESTADO,CONDUCTOR_MATERIAL,CONDUCTOR_AISLANTE,CONDUCTOR_CALIBRE," +
				"CODUCTOR_FASES,CONDUCTOR_ESTADO,CANTIDAD_USUARIOS,ELEMENTO_PROTECCION,TIPO,TIERRA,EQUIPOS," +
				"NOTAS,FECHA_SISTEMA,USUARIO) VALUE (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE(),?)";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, alta.getTramo_nodo_inicial());
		pst.setString(2, alta.getTramo_nodo_final());
		pst.setString(3, alta.getTramo_longitud());
		pst.setString(4, alta.getApoyo_altura());
		pst.setString(5, alta.getApoyo_cantidad());
		pst.setString(6, alta.getApoyo_material());
		pst.setString(7, alta.getApoyo_estado());
		pst.setString(8, alta.getEstructura_tipo());
		pst.setString(9, alta.getEstructura_estado());
		pst.setString(10, alta.getAislamiento_tipo());
		pst.setString(11, alta.getAislamiento_estado());
		pst.setString(12, alta.getConductor_material());
		pst.setString(13, alta.getConductor_aislante());
		pst.setString(14, alta.getConductor_calibre());
		pst.setString(15, alta.getConductor_fases());
		pst.setString(16, alta.getConductor_estado());
		pst.setString(17, alta.getCantidad_usuarios());
		pst.setString(18, alta.getElemento_proteccion());
		pst.setString(19, alta.getTipo());
		pst.setString(20, alta.getTierra());
		pst.setString(21, alta.getEquipos());
		pst.setString(22, alta.getNotas());
		pst.setString(23, alta.getUsuario());
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Add(AltaTension alta) throws SQLException {
		boolean result = false;
		String sql = "INSERT INTO alta_tension (TRAMO_NODO_INICIAL,TRAMO_NODO_FINAL,TRAMO_LONGITUD," +
				"APOYO_ALTURA,APOYO_CANTIDAD,APOYO_MATERIAL,APOYO_ESTADO,ESTRUCTURA_TIPO,ESTRUCTURA_ESTADO," +
				"AISLAMIENTO_TIPO,AISLAMIENTO_ESTADO,CONDUCTOR_MATERIAL,CONDUCTOR_AISLANTE,CONDUCTOR_CALIBRE," +
				"CODUCTOR_FASES,CONDUCTOR_ESTADO,CANTIDAD_USUARIOS,ELEMENTO_PROTECCION,TIPO,TIERRA,EQUIPOS," +
				"NOTAS,FECHA_SISTEMA,USUARIO) VALUE (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE(),?)";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, alta.getTramo_nodo_inicial());
		pst.setString(2, alta.getTramo_nodo_final());
		pst.setString(3, alta.getTramo_longitud());
		pst.setString(4, alta.getApoyo_altura());
		pst.setString(5, alta.getApoyo_cantidad());
		pst.setString(6, alta.getApoyo_material());
		pst.setString(7, alta.getApoyo_estado());
		pst.setString(8, alta.getEstructura_tipo());
		pst.setString(9, alta.getEstructura_estado());
		pst.setString(10, alta.getAislamiento_tipo());
		pst.setString(11, alta.getAislamiento_estado());
		pst.setString(12, alta.getConductor_material());
		pst.setString(13, alta.getConductor_aislante());
		pst.setString(14, alta.getConductor_calibre());
		pst.setString(15, alta.getConductor_fases());
		pst.setString(16, alta.getConductor_estado());
		pst.setString(17, alta.getCantidad_usuarios());
		pst.setString(18, alta.getElemento_proteccion());
		pst.setString(19, alta.getTipo());
		pst.setString(20, alta.getTierra());
		pst.setString(21, alta.getEquipos());
		pst.setString(22, alta.getNotas());
		pst.setString(23, alta.getUsuario());
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Update(String key) throws SQLException {
		boolean result = false;
		String sql = "UPDATE alta_tension SET TRAMO_NODO_INICIAL=?,TRAMO_NODO_FINAL=?,TRAMO_LONGITUD=?," +
				"APOYO_ALTURA=?,APOYO_CANTIDAD=?,APOYO_MATERIAL=?,APOYO_ESTADO=?,ESTRUCTURA_TIPO=?,ESTRUCTURA_ESTADO=?," +
				"AISLAMIENTO_TIPO=?,AISLAMIENTO_ESTADO=?,CONDUCTOR_MATERIAL=?,CONDUCTOR_AISLANTE=?,CONDUCTOR_CALIBRE=?," +
				"CODUCTOR_FASES=?,CONDUCTOR_ESTADO=?,CANTIDAD_USUARIOS=?,ELEMENTO_PROTECCION=?,TIPO,TIERRA=?,EQUIPOS=?," +
				"NOTAS=? WHERE ID=?)";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, alta.getTramo_nodo_inicial());
		pst.setString(2, alta.getTramo_nodo_final());
		pst.setString(3, alta.getTramo_longitud());
		pst.setString(4, alta.getApoyo_altura());
		pst.setString(5, alta.getApoyo_cantidad());
		pst.setString(6, alta.getApoyo_material());
		pst.setString(7, alta.getApoyo_estado());
		pst.setString(8, alta.getEstructura_tipo());
		pst.setString(9, alta.getEstructura_estado());
		pst.setString(10, alta.getAislamiento_tipo());
		pst.setString(11, alta.getAislamiento_estado());
		pst.setString(12, alta.getConductor_material());
		pst.setString(13, alta.getConductor_aislante());
		pst.setString(14, alta.getConductor_calibre());
		pst.setString(15, alta.getConductor_fases());
		pst.setString(16, alta.getConductor_estado());
		pst.setString(17, alta.getCantidad_usuarios());
		pst.setString(18, alta.getElemento_proteccion());
		pst.setString(19, alta.getTipo());
		pst.setString(20, alta.getTierra());
		pst.setString(21, alta.getEquipos());
		pst.setString(22, alta.getNotas());
		pst.setString(23, key);
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Update(String key, AltaTension alta) throws SQLException {
		boolean result = false;
		String sql = "UPDATE alta_tension SET TRAMO_NODO_INICIAL=?,TRAMO_NODO_FINAL=?,TRAMO_LONGITUD=?," +
				"APOYO_ALTURA=?,APOYO_CANTIDAD=?,APOYO_MATERIAL=?,APOYO_ESTADO=?,ESTRUCTURA_TIPO=?,ESTRUCTURA_ESTADO=?," +
				"AISLAMIENTO_TIPO=?,AISLAMIENTO_ESTADO=?,CONDUCTOR_MATERIAL=?,CONDUCTOR_AISLANTE=?,CONDUCTOR_CALIBRE=?," +
				"CODUCTOR_FASES=?,CONDUCTOR_ESTADO=?,CANTIDAD_USUARIOS=?,ELEMENTO_PROTECCION=?,TIPO,TIERRA=?,EQUIPOS=?," +
				"NOTAS=? WHERE ID=?)";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, alta.getTramo_nodo_inicial());
		pst.setString(2, alta.getTramo_nodo_final());
		pst.setString(3, alta.getTramo_longitud());
		pst.setString(4, alta.getApoyo_altura());
		pst.setString(5, alta.getApoyo_cantidad());
		pst.setString(6, alta.getApoyo_material());
		pst.setString(7, alta.getApoyo_estado());
		pst.setString(8, alta.getEstructura_tipo());
		pst.setString(9, alta.getEstructura_estado());
		pst.setString(10, alta.getAislamiento_tipo());
		pst.setString(11, alta.getAislamiento_estado());
		pst.setString(12, alta.getConductor_material());
		pst.setString(13, alta.getConductor_aislante());
		pst.setString(14, alta.getConductor_calibre());
		pst.setString(15, alta.getConductor_fases());
		pst.setString(16, alta.getConductor_estado());
		pst.setString(17, alta.getCantidad_usuarios());
		pst.setString(18, alta.getElemento_proteccion());
		pst.setString(19, alta.getTipo());
		pst.setString(20, alta.getTierra());
		pst.setString(21, alta.getEquipos());
		pst.setString(22, alta.getNotas());
		pst.setString(23, key);
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Remove(String key) throws SQLException {
		boolean result = false;
		String sql = "DELETE FROM alta_tension WHERE ID = ?"; 
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, key);
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Find(String key) throws SQLException {
		boolean result = false;
		String sql = "SELECT * alta_tension WHERE CODIGO = ?"; 
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, key);
		ResultSet rs = conexion.Query(pst);
		if (rs.next()) {
			alta = new AltaTension();
			alta.setId(rs.getString("ID"));
			alta.setTramo_nodo_inicial(rs.getString("TRAMO_NODO_INICIAL"));
			alta.setTramo_nodo_final(rs.getString("TRAMO_NODO_FINAL"));
			alta.setTramo_longitud(rs.getString("TRAMO_LONGITUD"));
			alta.setApoyo_altura(rs.getString("APOYO_ALTURA"));
			alta.setApoyo_cantidad(rs.getString("APOYO_CANTIDAD"));
			alta.setApoyo_material(rs.getString("APOYO_MATERIAL"));
			alta.setApoyo_estado(rs.getString("APOYO_ESTADO"));
			alta.setEstructura_tipo(rs.getString("ESTRUCTURA_TIPO"));
			alta.setEstructura_estado(rs.getString("ESTRUCTURA_ESTADO"));
			alta.setAislamiento_tipo(rs.getString("AISLAMIENTO_TIPO"));
			alta.setAislamiento_estado(rs.getString("AISLAMIENTO_ESTADO"));
			alta.setConductor_material(rs.getString("CONDUCTOR_MATERIAL"));
			alta.setConductor_aislante(rs.getString("CONDUCTOR_AISLANTE"));
			alta.setConductor_calibre(rs.getString("CONDUCTOR_CALIBRE"));
			alta.setConductor_fases(rs.getString("CODUCTOR_FASES"));
			alta.setConductor_estado(rs.getString("CONDUCTOR_ESTADO"));
			alta.setCantidad_usuarios(rs.getString("CANTIDAD_USUARIOS"));
			alta.setElemento_proteccion(rs.getString("ELEMENTO_PROTECCION"));
			alta.setTipo(rs.getString("TIPO"));
			alta.setTierra(rs.getString("TIERRA"));
			alta.setEquipos(rs.getString("EQUIPOS"));
			alta.setNotas(rs.getString("NOTAS"));
			alta.setUsuario(rs.getString("USUARIO"));
			alta.setFecha(rs.getString("FECHA_SISTEMA"));
			result = true;
		}
		return result;
	}
	
	public ArrayList<AltaTension> List() throws SQLException {
		ArrayList<AltaTension> lista = new ArrayList<AltaTension>();
		String sql = "SELECT * alta_tension ORDER BY FECHA_SISTEMA"; 
		ResultSet rs = conexion.Query(sql);
		if (rs.next()) {
			AltaTension alta = new AltaTension();
			alta.setId(rs.getString("ID"));
			alta.setTramo_nodo_inicial(rs.getString("TRAMO_NODO_INICIAL"));
			alta.setTramo_nodo_final(rs.getString("TRAMO_NODO_FINAL"));
			alta.setTramo_longitud(rs.getString("TRAMO_LONGITUD"));
			alta.setApoyo_altura(rs.getString("APOYO_ALTURA"));
			alta.setApoyo_cantidad(rs.getString("APOYO_CANTIDAD"));
			alta.setApoyo_material(rs.getString("APOYO_MATERIAL"));
			alta.setApoyo_estado(rs.getString("APOYO_ESTADO"));
			alta.setEstructura_tipo(rs.getString("ESTRUCTURA_TIPO"));
			alta.setEstructura_estado(rs.getString("ESTRUCTURA_ESTADO"));
			alta.setAislamiento_tipo(rs.getString("AISLAMIENTO_TIPO"));
			alta.setAislamiento_estado(rs.getString("AISLAMIENTO_ESTADO"));
			alta.setConductor_material(rs.getString("CONDUCTOR_MATERIAL"));
			alta.setConductor_aislante(rs.getString("CONDUCTOR_AISLANTE"));
			alta.setConductor_calibre(rs.getString("CONDUCTOR_CALIBRE"));
			alta.setConductor_fases(rs.getString("CODUCTOR_FASES"));
			alta.setConductor_estado(rs.getString("CONDUCTOR_ESTADO"));
			alta.setCantidad_usuarios(rs.getString("CANTIDAD_USUARIOS"));
			alta.setElemento_proteccion(rs.getString("ELEMENTO_PROTECCION"));
			alta.setTipo(rs.getString("TIPO"));
			alta.setTierra(rs.getString("TIERRA"));
			alta.setEquipos(rs.getString("EQUIPOS"));
			alta.setNotas(rs.getString("NOTAS"));
			alta.setUsuario(rs.getString("USUARIO"));
			alta.setFecha(rs.getString("FECHA_SISTEMA"));
			
			lista.add(alta);

		}
		return lista;
	}

}
